import 'package:firstflutterdemo/http/httpdemo.dart';
import 'package:flutter/material.dart';

import ' widgetdemo02/widgetlayout01.dart';
import 'widgetdemo01/MyApp.dart';
import 'widgetdemo01/MyMaterialApp.dart';

void main() {
  // dio_get();

  // getIp().then((value){
  //   print("请求结果 $value");
  // }).catchError((err){
  //   print("请求报错 $err");
  // });

  // postRequest();
  // testGet();

  runApp(
      // const MyApp()
      // const MaterialApp(
      //   title: 'Test MaterialApp',
      //   home: SafeArea(child: MyScaffold()),
      // )

      // const Center(
      //   child: Text(
      //     'hello world',
      //     textDirection: TextDirection.ltr,
      //   ),
      // )
      /*
            https://flutter.cn/docs/development/ui/widgets-intro

              runApp() 函数会持有传入的 Widget，并且使它成为 widget 树中的根节点。在这个例子中，Widget 树有两个 widgets， Center widget 及其子 widget —— Text widget。
              框架会强制让根 widget 铺满整个屏幕，也就是说“Hello World”会在屏幕上居中显示。在这个例子我们需要指定文字的方向，当使用 MaterialApp widget 时，你就无需考虑这一点，之后我们会进一步的描述。

              在写应用的过程中，取决于是否需要管理状态，你通常会创建一个新的组件继承 StatelessWidget 或 StatefulWidget。
               Widget 的主要工作是实现 build() 方法，该方法根据其它较低级别的 widget 来描述这个 widget。
               框架会逐一构建这些 widget，直到最底层的描述 widget 几何形状的 RenderObject。

           */

      // const MyFirstMaterialApp()

      // SecondApp() // 这里不能使用const ，因为 SecondApp 没有 const 构造函数

      // ThirdApp()

      // const StatefulWidgetsApp());
      // const StatefulWidgetsApp2());

      // const ShopStatefulWidgetsApp()
      // const ShopStatefulWidgetsApp2()

      // const UI1App()
      // const MyMaterialApp()
      const MyApp()

  );

}
